package com.sugon.entity;

import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sugon.consts.BaseConsts;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 备件清单实体
 * 表名 SPARE_PART
 *
 * @author sugon
 * @date 2019-07-17 09:37:19
 * @modified yuxd 2020-06-30 14:18
 * 新增originPartCode 原始备件编码
 * installPosition 安装部位
 */
@Data
public class SparePartEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 备用字段4
     */
    private String reserve4;
    /**
     * 备用字段3：审核备注
     * 主要是为了记录备件审核不通过时存储备注信息用
     */
    private String reserve3;

    /**
     * 备用字段2-备件图片保存路径
     */
    private String reserve2;
    /**
     * 备用字段1-一次装机量
     */
    private String reserve1;
    /**
     * 删除标识
     */
    private Integer delFlag;

    /**
     * 系统编码
     */
    private String partCode;

    /**
     * ERP编码
     */
    private String erpCode;

    /**
     * 原始备件编码,老系统
     * 20200630 yu 新增
     */
    private String originPartCode;

    /**
     * 备件分类
     */
    private String installPosition;

    /**
     * 备件分类名称
     */
    private String installPositionName;

    /**
     * 供应商ID
     */
    private String supplierId;

    /**
     * 使用数目
     */
    private Integer useNum;

    /**
     * 是否为核心部件1:是 0:否
     */
    private Integer isKey;

    private String isKeyDesc;

    public String getIsKeyDesc() {
        if (isKey != null) {
            if (isKey == 1) {
                return "是";
            } else if (isKey == 0) {
                return "否";
            }
        }
        return "";
    }

    /**
     * 备注
     */
    private String remark;

    /**
     * 录入单位
     */
    private String useUnit;
    /**
     * 初始数量
     */
    private Integer initNum;

    /**
     * 安全库存
     */
    private Integer safeNum;

    /**
     * 计划ABC
     * <p>
     * A：A类备件
     * B：B类备件
     * C：C类备件
     * A-关：A-关键备件
     * C-消：C-消耗类备件
     */
    private String planAbc;

    /**
     * 规格
     */
    private String spec;
    /**
     * 名称
     */
    private String name;

    /**
     * ID
     */
    private String id;
    /**
     * 状态,取值SysApproveStatusConst
     */
    private Integer status;
    /**
     * 单位
     */
    private String unit;

    /**
     * 备件单价 参考价格
     */
    private BigDecimal price;

    private String createUser;
    /**
     * 创建人姓名
     */
    private String createUserName;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date createDate;

    private String updateUser;

    /**
     * 更新人姓名
     */
    private String updateUserName;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date updateDate;

    /**
     * 报废数量
     */
    private Integer scrapNum;

    /**
     * 库存数量
     */
    private Integer stockNum;

    /**
     * 在途数量
     */
    private Integer transitNum;

    /**
     * 备件性质 0通用型备件 1专用型备件
     * 专用型备件可关联设备
     */
    private Integer type;

    /**
     * 备件类别：开关传感器/气缸/轴承/丝杆
     */
    private String category;

    /**
     * 是否有效 1：有效 0：无效
     */
    private Integer isValid;

    /**
     * 是否存在可替换
     */
    private Integer isChange;
    private String outNum;//出库数量
    private String num;//报废数量

    /**
     * 生产厂家
     */
    private String producor;

    /**
     * 生产厂家CODE
     */
    private String producerCode;

    /**
     * 设备类型编码
     */
    private String devType;//设备类型编码

    /**
     * 设备类型名称
     */
    private String devTypeName;

    /**
     * 平均到货周期
     */
    private Integer avgDeliveryCycle;

    /**
     * 平均耗用周期
     */
    private Integer avgConsumeCycle;

    public void setInstallPosition(String installPosition) {
        if (StrUtil.isNotEmpty(installPosition)) {
            this.installPosition = installPosition;
        }
    }

    public void setErpCode(String erpCode) {
        if (StrUtil.isNotEmpty(erpCode)) {
            this.erpCode = erpCode;
        }
    }

    public String getErpCode() {
        return com.sugon.modules.utils.StrUtil.doEmptyHandle(erpCode);
    }

    public String getReserve2() {
        return StrUtil.isEmpty(reserve2) ? BaseConsts.SP_DEFAULT_IMAGE_URL : reserve2;
    }

}
